package com.example.verifycodedemo;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.app.ActivityManager;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {
    private EditText et_veryfyCode;
    private Button btn_getCode;
    private Timer timer=new Timer();
    private TimerTask task;
    private int count=20;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_veryfyCode=(EditText) findViewById(R.id.ed_verifycode);
        et_veryfyCode.setEnabled(false);
        btn_getCode=(Button) findViewById(R.id.btn_getCode);
        btn_getCode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               startTimer();
               btn_getCode.setText("20秒后可重新发送");
                btn_getCode.setEnabled(false);       //设置按钮不可用
                et_veryfyCode.setEnabled(true);      //设置文本框可用用
                et_veryfyCode.requestFocus();        //文本框自动获取焦点
            }

        });
    }
    private void  startTimer(){
        task = new TimerTask() {
            @Override
            public void run() {
                Message message = handler.obtainMessage();
                message.what = 1;                  //设置Message的what属性，用于标识Message
                message.obj="This message is from Timer task。";  //发送字符串到Handler
                handler.sendMessage(message);
            }
        };
        //计时开始
        timer.schedule(task,0,1000);
    }

    private Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            if (msg.what == 1) {
                count -= 1;
                btn_getCode.setText(count + "秒后可重新发送");
                //使用Toast显示收到的的字符串
                Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
                if (count <= 0) {
                    task.cancel();
                    count=20;
                    btn_getCode.setText("获取验证码");
                    btn_getCode.setEnabled(true);      //按钮可用
                    et_veryfyCode.setEnabled(false);   //文本框不可用
                }
            }
        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        timer.cancel();
        task.cancel();
        handler=null;
    }
}

/*//Timer，Timertask，Handler使用总结：
(1)创建一个Handler handler=new Hangler(){};在其中实现handleMessage(Message msg)方法，在此处编写收到定时信息后对按钮的处理。
(2)声明类的成员变量Timer timer=new Timer();Timertask task;
(3)创建一个实现定时循环执行的方法startTimer()，在其中实现发送handler.sendMessage(msg);然后执行timer.schedule(task,0,interval);

*/




